#include"../../include/mesh/mesh.hpp"


namespace SoftEngine
{
    void Model::InsertMesh(int index1,int index2,int index3,COLORREF color){
        auto indexMax=this->vertex.size()-1;
        if (index1>indexMax||index2>indexMax||index3>indexMax){
            throw "index out of range";
            return;
        }
        this->mesh.push_back(MeshColorful(index1,index2,index3,color));
    }
    // 生成一个有各种颜色的正方体
    Model GenerateNewMesh2(){
        Model newRectangle("cube",8,XMFLOAT3(0,300,0));
        newRectangle.InsertVertex(0,XMFLOAT3(-100, 100, 100));   // 前上左
        newRectangle.InsertVertex(1,XMFLOAT3(100, 100, 100));    // 前上右
        newRectangle.InsertVertex(2,XMFLOAT3(-100, -100, 100));  // 前下左
        newRectangle.InsertVertex(3,XMFLOAT3(-100, -100, -100)); // 后下左
        newRectangle.InsertVertex(4,XMFLOAT3(-100, 100, -100));  // 后上左
        newRectangle.InsertVertex(5,XMFLOAT3(100, 100, -100));   // 后上右
        newRectangle.InsertVertex(6,XMFLOAT3(100, -100, 100));   // 前下右
        newRectangle.InsertVertex(7,XMFLOAT3(100, -100, -100));  // 后下右
        
        // 前面 (Z正方向)
        newRectangle.InsertMesh(0,1,2,RGB(0, 0, 255));  // 前面三角形1
        newRectangle.InsertMesh(1,6,2,RGB(0, 0, 255));  // 前面三角形2
        
        // 后面 (Z负方向)
        newRectangle.InsertMesh(4,3,5,RGB(0, 255, 0));  // 后面三角形1
        newRectangle.InsertMesh(3,7,5,RGB(0, 255, 0));  // 后面三角形2
        
        // 上面 (Y正方向)
        newRectangle.InsertMesh(0,4,1,RGB(255, 0, 0));  // 上面三角形1
        newRectangle.InsertMesh(1,4,5,RGB(255, 0, 0));  // 上面三角形2
        
        // 下面 (Y负方向)
        newRectangle.InsertMesh(2,6,3,RGB(0, 0, 255));  // 下面三角形1
        newRectangle.InsertMesh(3,6,7,RGB(0, 0, 255));  // 下面三角形2
        
        // 左面 (X负方向)
        newRectangle.InsertMesh(0,2,4,RGB(255, 0, 255));  // 左面三角形1
        newRectangle.InsertMesh(2,3,4,RGB(255, 0, 255));  // 左面三角形2
        
        // 右面 (X正方向)
        newRectangle.InsertMesh(1,5,6,RGB(0, 255, 0));  // 右面三角形1
        newRectangle.InsertMesh(5,7,6,RGB(0, 255, 0));  // 右面三角形2
        
        return newRectangle;
    }


} // namespace SoftEngine
